package com.hanscan.util;

import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import java.util.ArrayList;
import javax.mail.Session;
import javax.mail.SendFailedException;


public class sendEmail {


  
   private Address from;//Dirrecion que manda los email
   private Address to;//Destinatario del mail
   private String server; //servidor de correo
   private String address;//Dirrecion que manda los email
   private String protocol;//Protocolo



  // private Configuration configuration;


    public sendEmail() throws AddressException
    {
        System.out.println("Constructor del mail");
        /*
         * Configuration:
            MAIL_SERVER=excsrv.hanscan.local
            FROM=jesus.asensio@hanscan.com
            PROTOCOL=mail.smtp.host
         */
        this.server = "smtp.hanscan.com";
        this.address = "dalia.vicente@hanscan.com";
        this.protocol = "mail.smtp.host";
        from = new InternetAddress(address);
        to = new InternetAddress();//visitor.getEmail1());
    }

    public void sendEmail() throws AddressException, MessagingException
    {

        //Crear la sesion de correo y el mensaje
        Properties prop = new Properties();
        prop.put(protocol, server);

        Session session = Session.getInstance(prop, null);
        session.setDebug(true);
        ArrayList<Address> arrayList = new ArrayList<Address>();
        Address lista[] = new Address[2]; //array de destinatarios
        MimeMessage message = new MimeMessage(session);

        //añadir las direcciones de correo
        arrayList.add(to);
        arrayList.add(from);
        lista = arrayList.toArray(lista);


        String cuerpoEmail;
        try
        {
            //Condtruir cabecera
             message.setFrom(from);
             message.addRecipients(Message.RecipientType.TO, lista);
             message.setSubject("Fin de tiempo de acceso");

            //introducir texto
            cuerpoEmail = "\n\n\nEstimado Sr.";
            cuerpoEmail =
                    cuerpoEmail + "\n\n\nLe informamos que sus datos biométricos " +
                    "utilizados para su comodidad y seguridad en " +
                    "ASCARI RACE RESORT han sido completamente eliminados " +
                    "de nuestros archivos.\n\nPara cualquier duda o sugerencia " +
                    "al respecto no dude en contactar con nosotros a través de " +
                    "nuestro correo electrónico de soporte";
            cuerpoEmail = cuerpoEmail + " " + "dalia.vicente@hanscan.com" + " ";
            cuerpoEmail = cuerpoEmail + "\n\nSin más, reciba un cordial " +
                    "saludo.\n\nASCARI RACE RESORT.\n\n";
            message.setText(cuerpoEmail);
            System.out.println("********** Enviar Email");
             // mandar el correo
             Transport tr = session.getTransport("smtp");

             tr.send(message);
             System.out.println("********** Email enviado");
             tr.close();
        }
        catch (SendFailedException e)
        {
            Address[] adr = e.getInvalidAddresses();

            cuerpoEmail = "\n\nEl mensaje no pudo ser enviado a los siguientes " +
                    "destinatarios: \n";
            for (int i = 0; i < adr.length; i++)
            {
                arrayList.remove(adr[i]);
                cuerpoEmail = cuerpoEmail +adr[i] + "\n";
            }
            message.addRecipients(Message.RecipientType.TO, address);
            message.setSubject("Error al enviar el correo");
            message.setText(cuerpoEmail);
            Transport tr = session.getTransport("smtp");
            tr.send(message);
            tr.close();
        }
    }

}
